// 给颜色添加透明度 仅支持rgb、rgba、16进制
/**
 * @description 给颜色添加透明度 仅支持rgb、rgba、16进制
 * @param {String} color 需要转换的颜色值
 * @param {Number} opacity 透明度
 * @return {String} 转换后的颜色值
 */
export default function addOpacity (color:string, opacity = 0.2) {
	let rgbaColor = '';
	if (color.includes('#')) {
		// 如果是hex颜色
		let hex = color.replace('#', '');
		if (hex.length === 3) {
			// 处理3位hex颜色值
			hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
		}
		const r = parseInt(hex.substring(0, 2), 16);
		const g = parseInt(hex.substring(2, 4), 16);
		const b = parseInt(hex.substring(4, 6), 16);
		rgbaColor = `rgba(${r}, ${g}, ${b}, ${opacity})`;
	} else if (color.includes('rgb')) {
		// 如果是rgb或rgba颜色
		const rgbValues: any = color.match(/\d+/g);
		if (color.includes('rgba')) {
			// 如果已经是rgba，替换透明度
			rgbValues[3] = opacity;
		} else {
			// 如果是rgb，添加透明度
			rgbValues.push(opacity);
		}
		rgbaColor = `rgba(${rgbValues.join(', ')})`;
	} else {
		throw new Error('仅支持转换16进制、rgb、rgba的颜色值');
	}
	return rgbaColor;
}